<?php
namespace Common\Model;
use Think\Model;

/**
 *验证码模型
 */
class CodeModel extends BaseModel
{
	/**
	 * 插入一条验证码
	 * 手机号		$phone
	 * 类型		$type
	 * 验证码		$rand
	 */
	 function code_insert($phone,$type=0,$rand){
	    
	 	if(!$phone || !$rand){
	 		return false;
	 	}
	    $time=time();
		$shuju=array(
			'type'=>$type,
			'phone'=>$phone,
			'code'=>$rand,
			'success'=>1,
			'send_tiem'=>$time
		);

	    if($this->create($shuju)){
	        $result = $this->add($shuju); // 写入数据到数据库 
	        if($result){
	            // 如果主键是自动增长型 成功后返回值就是最新插入的值
	            return $result;
	        }else{
	        	return false;
	        }
	    }
	 	
	 }
	 
	 
	 /**
	  * 获取最新的验证码
	  * 手机号 	$phone
	  * 类型		$type
	  */
	  function newest($phone,$type){
	  	$where=array(
			'phone' => $phone,
			'type'  => $type,
			//send_tiem
		);
		$result=$this->where($where)->order('send_tiem  desc')->find();  	
		if($result){
			return $result;
		}else{
			return false;
		}
	  }
	 
	 
	 /**
	  * 验证验证码
	  * 验证码	$rand
	  * 数据集	$data	array		
	  */
	  function verification($rand,$data){
	  	$time=time();
	  	$data['send_tiem']=$data['send_tiem']+(5*60);
		if($time > $data['send_tiem']){
			return array(100,'验证码已超时');
		}
		
		if($rand!=$data['code']){     
			//return '验证码不正确';
			return array(400,'验证码不正确');
		}
		
		return array(200,'ok');
	  	
	  }


	  /**
	   * 更新验证码数据
	   * 数据id $code_id
	   * 发送状态	success
	   */
	   function code_update($code_id,$success){
		   	$time=time();
		   	$data=array(
				'success'=>$success,
				'receive_time'=>$time
			);
		
			$result=$this->where(array('id'=>$code_id))->save($data); 
			if($result){
				return $result;
			}else{
				return false;
			}
	   }
	   /**
	    * 统计指定时间内同一手机号发送验证码的次数
	    * 指定多长时间内        $time
	    * 手机号                        $phone
	    * 验证码类型                $type 1留言
	    * 发送状态	      $success
	    */
	   function code_count($phone,$type,$time,$success){
	       $time=time()-$time*60;
	       $where=array(
	           'success'=>array('in',$success),
	           'receive_time'=>array('egt',$time),
	           'phone'=>$phone
	       );
	       $count=$this->where($where)->count();	
	       if($count!==false){
	           return $count;
	       }else{
	           return false;
	       }
	   }
	 
	 
	 
}
